useful_funcs module

Collection of useful functions.

Part of this is copied/inspired by Rob’s binary_stars module

Functions:
  • calc_period_from_sep(m1, m2, sep) calculate the period given the separation.

  • calc_sep_from_period(m1, m2, per) does the inverse.

  • rzams(m, z) gives you the ZAMS radius of a star

  • ZAMS_collision(m1, m2, e, sep, z) returns 1 if stars collide on the ZAMS

  • roche_lobe(q): returns roche lobe radius in units of separation

  • ragb(m): radius at first thermal pulse

  • minimum_period_for_RLOF(M1, M2, metallicity, store_memaddr=-1): function to calculate the minimum period that leads to RLOF on ZAMS

  • minimum_separation_for_RLOF(M1, M2, metallicity, store_memaddr=-1): function to calculate the minimum period that leads to RLOF on ZAMS

  • maximum_mass_ratio_for_RLOF(M1, orbital_period, store_memaddr=None): Function to calculate the maximum mass ratio that leads to RLOF on ZAMS

Tasks:
  • TODO: check whether these functions are correct

binarycpython.utils.useful_funcs.calc_period_from_sep(M1, M2, sep)[source]

calculate period from separation

Parameters
  • M1 (Union[int, float]) – Primary mass in solar mass

  • M2 (Union[int, float]) – Secondary mass in solar mass

  • sep (Union[int, float]) – Separation in solar radii

Return type

Union[int, float]

Returns

period in days

binarycpython.utils.useful_funcs.calc_sep_from_period(M1, M2, period)[source]

Calculate separation from period.

Parameters
  • M1 (Union[int, float]) – Primary mass in solar mass

  • M2 (Union[int, float]) – Secondary mass in solar mass

  • period (Union[int, float]) – Period of binary in days

Return type

Union[int, float]

Returns

Separation in solar radii

binarycpython.utils.useful_funcs.maximum_mass_ratio_for_RLOF(M1, orbital_period, metallicity=0.02, store_memaddr=None)[source]

Wrapper function for _binary_c_bindings.return_maximum_mass_ratio_for_RLOF

Handles the output and returns the maximum mass ratio at which RLOF just does not occur at ZAMS

Parameters
  • M1 – Primary mass in solar mass

  • orbital_period – orbital period in days

  • metallicity – metallicity

  • store_memaddr (optional) – store memory adress

Returns

maximum mass ratio that just does not cause a RLOF at ZAMS

binarycpython.utils.useful_funcs.minimum_period_for_RLOF(M1, M2, metallicity, store_memaddr=- 1)[source]

Wrapper function for _binary_c_bindings.return_minimum_orbit_for_RLOF

Handles the output and returns the minimum orbital period at which RLOF just does not occur at ZAMS

Parameters
  • M1 – Primary mass in solar mass

  • M2 – Secondary mass in solar mass

  • metallicity – metallicity

  • store_memaddr (optional) – store memory address

Returns

minimum orbital_period that just does not cause a RLOF at ZAMS

binarycpython.utils.useful_funcs.minimum_separation_for_RLOF(M1, M2, metallicity, store_memaddr=- 1)[source]

Wrapper function for _binary_c_bindings.return_minimum_orbit_for_RLOF

Handles the output and returns the minimum separation at which RLOF just does not occur at ZAMS

Parameters
  • M1 – Primary mass in solar mass

  • M2 – Secondary mass in solar mass

  • metallicity – metallicity

  • store_memaddr (optional) – store memory adress

Returns

minimum separation that just does not cause a RLOF at ZAMS

binarycpython.utils.useful_funcs.ragb(m)[source]

Function to calculate radius of a star in units of solar radii at first thermal pulse as a function of mass (Z=0.02 only, but also good for Z=0.0001)

TODO: ask rob about this function. Do we still need this? Can we make something better? (i.e. upon installation of the code run a grid of systems and get the data from there?)

Parameters
  • m (Union[int, float]) – mass of star in units of solar mass

  • z – metallicity of star

Return type

Union[int, float]

Returns

radius at first thermal pulse in units of solar radii

binarycpython.utils.useful_funcs.roche_lobe(q)[source]

A function to evaluate R_L/a(q), Eggleton 1983.

# TODO: check the definition of the mass ratio # TODO: check whether the logs are correct

Parameters

q (Union[int, float]) – mass ratio of the binary (secondary/primary). If you input: q = mass_accretor/mass_donor, you will get the rochelobe radius of the accretor. And vice versa for the donor.

Return type

Union[int, float]

Returns

Roche lobe radius in units of the separation

binarycpython.utils.useful_funcs.rzams(m, z)[source]

Function to determine the radius of a ZAMS star as a function of m and z:

Based on the fits of Tout et al., 1996, MNRAS, 281, 257

Parameters
  • m – mass of star in solar mass

  • z – metallicity

Returns

radius of star at ZAMS, in solar radii

binarycpython.utils.useful_funcs.zams_collision(m1, m2, sep, e, z)[source]

given m1,m2, separation and eccentricity (and metallicity) determine if two stars collide on the ZAMS

Parameters
  • m1 (Union[int, float]) – Primary mass in solar mass

  • m2 (Union[int, float]) – Secondary mass in solar mass

  • sep (Union[int, float]) – separation in solar radii

  • e (Union[int, float]) – eccentricity

  • z (Union[int, float]) – metallicity

Return type

Union[int, float]

Returns

integer boolean whether the binary stars will collide at pericenter